package com.fowo.api.model.fbainvoice;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.ContentStyle;
import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
import com.fowo.api.common.validator.EnumsString;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/** 发货单 导入导出辅助模型 */
@Getter
@Setter
public class FBAInvoiceExcelPo {

  @Size(max = 50, message = "发货单号长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "发货单号")
  private String inoviceCode;

  @NotNull(message = "发货仓库不能为空")
  @Size(max = 50, message = "发货仓库长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "*发货仓库")
  private String deliveryWarehouseName;

  @ExcelIgnore
  @ExcelProperty(value = "*发货仓库")
  private Long deliveryWarehouse;

  @Size(max = 50, message = "货件号长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "货件号")
  private String shipmentCode;

  @EnumsString(
    value = { "快递", "海运", "空运", "其他" },
    message = "运输方式的可用值为 “快递”, “海运”, “空运”, “其他” 其中之一"
  )
  @Size(max = 50, message = "运输方式长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "运输方式")
  private String transportMode;

  @Size(max = 50, message = "发货人长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "发货人")
  private String sendName;

  @Size(max = 50, message = "发货时间长度不能超过20")
  @DateTimeFormat("yyyy年MM月dd日HH:mm:ss")
  @ExcelProperty(value = "发货时间")
  private java.util.Date sendTime;

  @DateTimeFormat("yyyy年MM月dd日HH:mm:ss")
  @ExcelProperty(value = "预计到货时间")
  private java.util.Date expectReachTime;

  @DateTimeFormat("yyyy年MM月dd日HH:mm:ss")
  @ExcelProperty(value = "实际发货时间")
  private java.util.Date realitySendTime;

  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "发货状态")
  private String invoiceStatus;

  @EnumsString(
    value = { "未打印", "已打印" },
    message = "打印状态的可用值为 “未打印”, “已打印” 其中之一"
  )
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "打印状态")
  private String printStatus;

  @ExcelProperty(value = "打印数量")
  private Integer printNum;

  @EnumsString(
    value = { "未拣货", "已拣货" },
    message = "拣货状态的可用值为 “未拣货”, “已拣货” 其中之一"
  )
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "拣货状态")
  private String isPick;

  @Size(max = 50, message = "创建人长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "创建人")
  private String lxCreateUser;

  @Size(max = 1024, message = "备注长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "备注")
  private String remark;

  @EnumsString(
    value = { "是", "否" },
    message = "是否锁库存的可用值为 “是”, “否” 其中之一"
  )
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "是否锁库存")
  private String islockinventory;

  @Size(max = 50, message = "发货产品长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "发货产品")
  private String productitems;

  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "计划发货量")
  private String planSendQuantity;

  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "申报量")
  private String declarationQuantity;

  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "发货量")
  private String sendQuantity;

  @Size(max = 50, message = "物流商长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "物流商")
  private String logisticsprovider1Name;

  @ExcelIgnore
  @ExcelProperty(value = "物流商")
  private Long logisticsprovider1;

  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "物流渠道")
  private String logisticsChannel1Name;

  @ExcelIgnore
  @ExcelProperty(value = "物流渠道")
  private Long logisticsChannel1;

  @ExcelProperty(value = "货件id")
  private Long shipmentIds;

  @ExcelProperty(value = "净重量")
  private java.math.BigDecimal netWeight;

  @ExcelProperty(value = "毛重量")
  private java.math.BigDecimal grossWeight;

  @ExcelProperty(value = "总体积")
  private java.math.BigDecimal totalVolume;
}
